home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / dfpp01.zip / CTLMENU.CPP < prev    next >
C/C++ Source or Header  |  1992-11-22  |  2KB  |  92 lines

  1. // --------------- ctlmenu.cpp
  2.  
  3. #include "dflatpp.h"
  4. #include "frame.h"
  5.  
  6. MenuSelection RestoreCmd  ("~Restore",  &DFWindow::Restore);
  7. MenuSelection MoveCmd     ("~Move",     &DFWindow::CtlMenuMove);
  8. MenuSelection SizeCmd     ("~Size",        &DFWindow::CtlMenuSize);
  9. MenuSelection MinimizeCmd ("Mi~nimize", &DFWindow::Minimize);
  10. MenuSelection MaximizeCmd ("Ma~ximize", &DFWindow::Maximize);
  11. MenuSelection CloseCmd    ("~Close  [Ctrl+F4]",
  12.                                         &DFWindow::CloseWindow, CTRL_F4);
  13.  
  14. MenuSelection *ControlMenu[8];
  15.  
  16. MenuBarItem CtlMenu[] = {
  17.     MenuBarItem( "", ControlMenu ),
  18.     MenuBarItem(MENU_TERMINATOR)
  19. };
  20.  
  21. void DFWindow::OpenCtlMenu()
  22. {
  23.     if (ctlmenu != NULL)
  24.         delete ctlmenu;
  25.  
  26.     int mn = 0;
  27.  
  28.     if (attrib & (MINBOX | MAXBOX))
  29.         ControlMenu[mn++] = &RestoreCmd;
  30.     if (attrib & MOVEABLE)
  31.         ControlMenu[mn++] = &MoveCmd;
  32.     if (attrib & SIZEABLE)
  33.         ControlMenu[mn++] = &SizeCmd;
  34.     if (attrib & MINBOX)
  35.         ControlMenu[mn++] = &MinimizeCmd;
  36.     if (attrib & MAXBOX)
  37.         ControlMenu[mn++] = &MaximizeCmd;
  38.     if (mn != 0)
  39.         ControlMenu[mn++] = &SelectionSeparator;
  40.     ControlMenu[mn++] = &CloseCmd;
  41.     ControlMenu[mn] = &SelectionTerminator;
  42.  
  43.     MinimizeCmd.Disable();
  44.     MaximizeCmd.Disable();
  45.     RestoreCmd.Disable();
  46.     SizeCmd.Disable();
  47.     MoveCmd.Disable();
  48.  
  49.     switch (windowstate)    {
  50.         case ISRESTORED:
  51.             if (attrib & MINBOX)
  52.                 MinimizeCmd.Enable();
  53.             if (attrib & MAXBOX)
  54.                 MaximizeCmd.Enable();
  55.             MoveCmd.Enable();
  56.             SizeCmd.Enable();
  57.             break;
  58.         case ISMINIMIZED:
  59.             RestoreCmd.Enable();
  60.             MoveCmd.Enable();
  61.             break;
  62.         case ISMAXIMIZED:
  63.             RestoreCmd.Enable();
  64.             if (attrib & MINBOX)
  65.                 MinimizeCmd.Enable();
  66.             break;
  67.     }
  68.     ctlmenu = new PopDown(this, ControlMenu);
  69.     ctlmenu->OpenMenu(Left()+1, Top()+1);
  70. }
  71.  
  72. void DFWindow::DeleteCtlMenu()
  73. {
  74.     if (ctlmenu != NULL)
  75.         delete ctlmenu;
  76.     ctlmenu = NULL;
  77. }
  78.  
  79. void DFWindow::CtlMenuMove()
  80. {
  81.     desktop.mouse().SetPosition(Left(), Top());
  82.     new Frame(this, Left());
  83. }
  84.  
  85. void DFWindow::CtlMenuSize()
  86. {
  87.     desktop.mouse().SetPosition(Right(), Bottom());
  88.     new Frame(this);
  89. }
  90.  
  91.  
  92.